package com.azt.api.service;

import com.azt.api.pojo.EnqQuote;
import com.azt.api.pojo.EnqQuoteItem;
import com.azt.model.page.Pagination;

import java.util.List;
import java.util.Map;

/**
 * Created by Snowler on 2016/10/12.
 */
public interface EnqQuoteService {


    /**
     * 保存或更新实体
     * @param quote
     */
    void saveOrUpdateQuote(EnqQuote quote);

    /**
     * 获取能够编辑的报价    既  关联的询价是发布状态
     * @param quoteId
     * @return
     */
    EnqQuote getCanEditQuoteById(Integer quoteId);

    /**
     * 根据quoteId 获取报价详情
     * @param quoteId
     * @return
     */
    List<EnqQuoteItem> getItemByQuote(Integer quoteId);

    /**
     * 编辑quote  顺便  删除items
     * @param quote
     * @param items
     */
    void updateQuoteWithDelItem(EnqQuote quote , List<Integer> items , boolean delItems);

	/** 
	 * @Title: getQuoteDetail 
	 * @Description: 查看项目里的查看报价详情
	 * @param pageNo
	 * @param pageSize
	 * @param branchCompanyId
	 * @return
	 * @return: Pagination
	 * @author: 查恒 2016年10月25日 下午1:55:30 
	 */
	Pagination getQuoteDetail(int pageNo, int pageSize, Integer projectId);

	/** 
	 * @Title: getOrderDetail 
	 * @Description: 查看项目里的订单详情
	 * @param pageNo
	 * @param pageSize
	 * @param projectId
	 * @return
	 * @return: Pagination
	 * @author: 查恒 2016年10月25日 下午5:28:30 
	 */
	Pagination getOrderDetail(int pageNo, int pageSize, Integer projectId);

    EnqQuoteItem getQuoteItemById(int itemId);

	/**
	 * 报价分析后保存分析结果
	 * Created by 张栋 on 2016/11/1 10:25
	 */
    void saveOrUpdateQuoteItem(Integer quoteid, List<EnqQuoteItem> item);

	
	/**
	 * 报价分析后,提交并保存到仓库
	 * Created by 张栋 on 2016/11/1 13:08
	 */
	void saveOrUpdateRepository(List<EnqQuoteItem> item);


	EnqQuote getQuoteById(Integer id);

	/**
	 * 报价数量
	 * */
    int getQuoteNum(int enquiryId);

	/**
	 * 比价, 根据商品名称, 查该商品名对应的报价里的最低价
	 * return null 时代表没找到
	 * Created by 张栋 on 2017/3/16 14:12
	 */
    Map reference(String name);

	/**
	 * 根据询价id 与  报价状态  查对应的报价
	 * Created by 张栋 on 2017/3/20 13:29
	 */
    List<EnqQuote> getQuoteByEnqidAndStat(Integer enqid,Integer stat);

	/**
	 * 更新报价状态
	 * @param enqid  询价id
	 * @param from  原state
	 * @param to  新state
	 *Created by 张栋
	 */
	void changeQuteStatFromToByEnqid(Integer enqid, int from, int to);
}
